package com.pureut.storage.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.storage.domain.ProductionMaterialReturn;
import com.pureut.storage.dto.PickingRestDbDto;
import com.pureut.storage.dto.PickingRestHandoverDto;
import com.pureut.storage.dto.ProductionMaterialReturnDto;
import com.pureut.storage.export.ProductionMaterialReturnExport;
import com.pureut.storage.vo.PickingRestDbVo;
import com.pureut.storage.vo.ProductionMaterialReturnVo;
import com.pureut.storage.vo.UpdateStatusByQualityVo;
import com.sale.common.mybatis.core.page.PageQuery;
import com.sale.common.mybatis.core.page.TableDataInfo;

import java.util.List;

/***
 * 生产退货service
 * Author:C
 * Date:2022/12/30 9:16
 * @DESC
 */
public interface ProductionMaterialReturnService extends IService<ProductionMaterialReturn> {

    /**
     * 生产退货列表
     */
    TableDataInfo<ProductionMaterialReturnDto> getProductionList(ProductionMaterialReturnVo productionMaterialReturnVo, PageQuery pageQuery) throws Exception;

    /**
     * 新增
     */
    boolean addProductionMaterialReturn(ProductionMaterialReturnVo productionMaterialReturnVo) throws Exception;

    /**
     * 关结
     */
    boolean close(ProductionMaterialReturnVo productionMaterialReturnVo);

    /**
     * 查看
     */
    ProductionMaterialReturnDto getView(Long id);

    /**
     * 修改
     */
    boolean updateProductionMaterialReturn(ProductionMaterialReturnVo productionMaterialReturnVo);

    /**
     * 删除
     */
    boolean deleteProductionMaterialReturn(String idStr);

    /**
     * 导出
     */
    List<ProductionMaterialReturnExport> getInfoExport(ProductionMaterialReturnVo productionMaterialReturnVo);

    /**
     * 生产退料pda
     */
    PickingRestDbDto productionReturnPda(PickingRestDbVo pickingRestDbVo) throws Exception;

    /**
     * 生产退料拣货撤销
     */
    boolean  pickingCancellation(PickingRestDbVo pickingRestDbVo);

    /**
     * 生产退料拣货完成
     */
    boolean pickingCompleted(PickingRestDbVo pickingRestDbVo) throws Exception;

    /**
     * 生产退料交接
     */
    PickingRestHandoverDto handover(PickingRestDbVo pickingRestDbVo);

    /**
     * 生产退料品质回传状态(fegin调用)
     */
    boolean updateStatusByQuality(UpdateStatusByQualityVo updateStatusByQualityVo);
}
